Electronic systems today may include one or more devices such as Complex Programmable Logic Devices (CPLDs), Field Programmable Gate Arrays (FPGAs), Programmable Read-Only Memories (PROMs), and Application Specific Integrated Circuits (ASICs). These devices are configured and/or programmed to fulfill the system requirements.
One technique for configuring such devices is to individually program the devices on conventional parallel programmers and then attach the devices to a system circuit board. This approach involves significant handling of devices which may result in damage. Specifically, device pins may be bent during insertion and removal from a programmer, thereby rendering the device useless. Another disadvantage with programmers is that upgrading devices at user sites may not be practicable because of the size and expense of programmers.
An alternative technique for configuring devices is in-system programming. This approach involves attaching devices to a system circuit board prior to the devices having been programmed. Once attached, the system voltage levels are used to program the devices. This approach solves the problems associated with parallel programmers in that the devices need not be handled both for programming and for attaching to the system board. In addition, with sufficient communication interface circuitry, the devices can be reprogrammed at a user site via personal computers or phone lines, for example. A disadvantage to this approach, however, is that the interface can be cost prohibitive.
A system and method that addresses the aforementioned problems, as well as other related problems, are therefore desirable.